// 函数入口

void main()=> runApp();

/**
 * 抽象类
 * 抽象类类似于java 语言中的接口 。抽象类里面不具体实现方法，只写好定义接口，具体实现留着调用的人去实现，
 * 抽象类可以使用abstract 关键字定义类
 * 
 */

// 数据库操作抽象类
// abstract class DateBaseOperate{
//   void insert(); //定义插入方法
//   void delete(); // 定义删除方法
//   void update(); //定义更新方法
//   void query(); //定义一个查询方法
// }

// // 操作数据库实现类
// class DateBaseOperateImpl extends DateBaseOperate{

//   // 实现插入方法
//   void insert(){
//     print("定义插入方法");
//   }

  
//   // 定义删除方法
//   void delete(){
//     print("定义删除方法");
//   }
  
//   // 定义更新方法
//   void update(){
//     print("定义更新方法");
//   }

//   // 定义一个查询方法
//   void query(){
//     print("定义一个查询方法");
//   }
// }

class Person {
  final _name;
  
  Person(this._name);
  String greet(String who) => '你好，$who';
}
class Impostor implements Person {
  
  get _name => '';
  String greet(String who) => '你哈$who';
}

String greetBob(Person person) => person.greet('小芳');

runApp() {
  // var db = new DateBaseOperateImpl();
  // db.insert();
  // db.delete();
  // db.update();
  // db.query();

  print(greetBob(Person('小云')));
  print(greetBob(Impostor()));
}


